import { WebGLExtensions } from './WebGLExtensions'
import { WebGLState } from './WebGLState'
import { WebGLProperties } from './WebGLProperties'
import { WebGLCapabilities } from './WebGLCapabilities'
import { WebGLUtils } from './WebGLUtils'
import { WebGLInfo } from './WebGLInfo'

export class WebGLTextures {
	constructor(
		gl: WebGLRenderingContext,
		extensions: WebGLExtensions,
		state: WebGLState,
		properties: WebGLProperties,
		capabilities: WebGLCapabilities,
		utils: WebGLUtils,
		info: WebGLInfo
	)

	allocateTextureUnit(): void
	resetTextureUnits(): void
	setTexture2D(texture: any, slot: number): void
	setTexture2DArray(texture: any, slot: number): void
	setTexture3D(texture: any, slot: number): void
	setTextureCube(texture: any, slot: number): void
	setupRenderTarget(renderTarget: any): void
	updateRenderTargetMipmap(renderTarget: any): void
	updateMultisampleRenderTarget(renderTarget: any): void
	safeSetTexture2D(texture: any, slot: number): void
	safeSetTextureCube(texture: any, slot: number): void
}
